package br.ufrn.dimap.ExperimentDslLanguage.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import br.ufrn.dimap.ExperimentDslLanguage.services.ExperimentDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalExperimentDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Experiment'", "'Process'", "'Metric'", "'Experimental Plan'", "'General Questions'", "'Design'", "'type'", "';'", "'Factor'", "'isTreatment'", "'True'", "'False'", "'Level'", "'{'", "'description'", "'id'", "'required'", "'}'", "'CRD \\u2013 Completely Randomized Design'", "'RCBD \\u2013 Randomized Complete Block Design'", "'LS \\u2013 Latin Square'", "'ComboBox'", "'CheckBoxes'", "'OptionButtons'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalExperimentDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalExperimentDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalExperimentDslParser.tokenNames; }
    public String getGrammarFileName() { return "../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g"; }



     	private ExperimentDslGrammarAccess grammarAccess;
     	
        public InternalExperimentDslParser(TokenStream input, ExperimentDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected ExperimentDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:68:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:69:2: (iv_ruleModel= ruleModel EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:70:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:77:1: ruleModel returns [EObject current=null] : ( (lv_elements_0_0= ruleExperimentElement ) )* ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:80:28: ( ( (lv_elements_0_0= ruleExperimentElement ) )* )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:81:1: ( (lv_elements_0_0= ruleExperimentElement ) )*
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:81:1: ( (lv_elements_0_0= ruleExperimentElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:82:1: (lv_elements_0_0= ruleExperimentElement )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:82:1: (lv_elements_0_0= ruleExperimentElement )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:83:3: lv_elements_0_0= ruleExperimentElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getElementsExperimentElementParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleExperimentElement_in_ruleModel130);
            	    lv_elements_0_0=ruleExperimentElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"ExperimentElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleExperimentElement"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:107:1: entryRuleExperimentElement returns [EObject current=null] : iv_ruleExperimentElement= ruleExperimentElement EOF ;
    public final EObject entryRuleExperimentElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExperimentElement = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:108:2: (iv_ruleExperimentElement= ruleExperimentElement EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:109:2: iv_ruleExperimentElement= ruleExperimentElement EOF
            {
             newCompositeNode(grammarAccess.getExperimentElementRule()); 
            pushFollow(FOLLOW_ruleExperimentElement_in_entryRuleExperimentElement166);
            iv_ruleExperimentElement=ruleExperimentElement();

            state._fsp--;

             current =iv_ruleExperimentElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExperimentElement176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExperimentElement"


    // $ANTLR start "ruleExperimentElement"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:116:1: ruleExperimentElement returns [EObject current=null] : (otherlv_0= 'Experiment' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'Process' ( (otherlv_3= RULE_ID ) )* otherlv_4= 'Metric' ( (otherlv_5= RULE_ID ) )* (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )? (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )? ) ;
    public final EObject ruleExperimentElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_experimentalPlans_7_0 = null;

        EObject lv_questions_9_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:119:28: ( (otherlv_0= 'Experiment' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'Process' ( (otherlv_3= RULE_ID ) )* otherlv_4= 'Metric' ( (otherlv_5= RULE_ID ) )* (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )? (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )? ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:120:1: (otherlv_0= 'Experiment' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'Process' ( (otherlv_3= RULE_ID ) )* otherlv_4= 'Metric' ( (otherlv_5= RULE_ID ) )* (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )? (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )? )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:120:1: (otherlv_0= 'Experiment' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'Process' ( (otherlv_3= RULE_ID ) )* otherlv_4= 'Metric' ( (otherlv_5= RULE_ID ) )* (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )? (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )? )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:120:3: otherlv_0= 'Experiment' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'Process' ( (otherlv_3= RULE_ID ) )* otherlv_4= 'Metric' ( (otherlv_5= RULE_ID ) )* (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )? (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )?
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleExperimentElement213); 

                	newLeafNode(otherlv_0, grammarAccess.getExperimentElementAccess().getExperimentKeyword_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:124:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:125:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:125:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:126:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleExperimentElement230); 

            			newLeafNode(lv_name_1_0, grammarAccess.getExperimentElementAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getExperimentElementRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleExperimentElement247); 

                	newLeafNode(otherlv_2, grammarAccess.getExperimentElementAccess().getProcessKeyword_2());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:146:1: ( (otherlv_3= RULE_ID ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==RULE_ID) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:147:1: (otherlv_3= RULE_ID )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:147:1: (otherlv_3= RULE_ID )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:148:3: otherlv_3= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getExperimentElementRule());
            	    	        }
            	            
            	    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExperimentElement267); 

            	    		newLeafNode(otherlv_3, grammarAccess.getExperimentElementAccess().getProcessProcessCrossReference_3_0()); 
            	    	

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleExperimentElement280); 

                	newLeafNode(otherlv_4, grammarAccess.getExperimentElementAccess().getMetricKeyword_4());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:163:1: ( (otherlv_5= RULE_ID ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==RULE_ID) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:164:1: (otherlv_5= RULE_ID )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:164:1: (otherlv_5= RULE_ID )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:165:3: otherlv_5= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getExperimentElementRule());
            	    	        }
            	            
            	    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExperimentElement300); 

            	    		newLeafNode(otherlv_5, grammarAccess.getExperimentElementAccess().getMetricsMetricsCrossReference_5_0()); 
            	    	

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:176:3: (otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )* )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==14) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:176:5: otherlv_6= 'Experimental Plan' ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )*
                    {
                    otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleExperimentElement314); 

                        	newLeafNode(otherlv_6, grammarAccess.getExperimentElementAccess().getExperimentalPlanKeyword_6_0());
                        
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:180:1: ( (lv_experimentalPlans_7_0= ruleExperimentalPlan ) )*
                    loop4:
                    do {
                        int alt4=2;
                        int LA4_0 = input.LA(1);

                        if ( (LA4_0==16) ) {
                            alt4=1;
                        }


                        switch (alt4) {
                    	case 1 :
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:181:1: (lv_experimentalPlans_7_0= ruleExperimentalPlan )
                    	    {
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:181:1: (lv_experimentalPlans_7_0= ruleExperimentalPlan )
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:182:3: lv_experimentalPlans_7_0= ruleExperimentalPlan
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getExperimentElementAccess().getExperimentalPlansExperimentalPlanParserRuleCall_6_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleExperimentalPlan_in_ruleExperimentElement335);
                    	    lv_experimentalPlans_7_0=ruleExperimentalPlan();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getExperimentElementRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"experimentalPlans",
                    	            		lv_experimentalPlans_7_0, 
                    	            		"ExperimentalPlan");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop4;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:198:5: (otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )* )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==15) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:198:7: otherlv_8= 'General Questions' ( (lv_questions_9_0= ruleQuestions ) )*
                    {
                    otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleExperimentElement351); 

                        	newLeafNode(otherlv_8, grammarAccess.getExperimentElementAccess().getGeneralQuestionsKeyword_7_0());
                        
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:202:1: ( (lv_questions_9_0= ruleQuestions ) )*
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( (LA6_0==RULE_STRING) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:203:1: (lv_questions_9_0= ruleQuestions )
                    	    {
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:203:1: (lv_questions_9_0= ruleQuestions )
                    	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:204:3: lv_questions_9_0= ruleQuestions
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getExperimentElementAccess().getQuestionsQuestionsParserRuleCall_7_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleQuestions_in_ruleExperimentElement372);
                    	    lv_questions_9_0=ruleQuestions();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getExperimentElementRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"questions",
                    	            		lv_questions_9_0, 
                    	            		"Questions");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop6;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExperimentElement"


    // $ANTLR start "entryRuleExperimentalPlan"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:228:1: entryRuleExperimentalPlan returns [EObject current=null] : iv_ruleExperimentalPlan= ruleExperimentalPlan EOF ;
    public final EObject entryRuleExperimentalPlan() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExperimentalPlan = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:229:2: (iv_ruleExperimentalPlan= ruleExperimentalPlan EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:230:2: iv_ruleExperimentalPlan= ruleExperimentalPlan EOF
            {
             newCompositeNode(grammarAccess.getExperimentalPlanRule()); 
            pushFollow(FOLLOW_ruleExperimentalPlan_in_entryRuleExperimentalPlan411);
            iv_ruleExperimentalPlan=ruleExperimentalPlan();

            state._fsp--;

             current =iv_ruleExperimentalPlan; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExperimentalPlan421); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExperimentalPlan"


    // $ANTLR start "ruleExperimentalPlan"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:237:1: ruleExperimentalPlan returns [EObject current=null] : (otherlv_0= 'Design' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'type' ( (lv_type_3_0= ruleDesignType ) ) ( (lv_factor_4_0= ruleFactor ) )* otherlv_5= ';' ) ;
    public final EObject ruleExperimentalPlan() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        Enumerator lv_type_3_0 = null;

        EObject lv_factor_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:240:28: ( (otherlv_0= 'Design' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'type' ( (lv_type_3_0= ruleDesignType ) ) ( (lv_factor_4_0= ruleFactor ) )* otherlv_5= ';' ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:241:1: (otherlv_0= 'Design' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'type' ( (lv_type_3_0= ruleDesignType ) ) ( (lv_factor_4_0= ruleFactor ) )* otherlv_5= ';' )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:241:1: (otherlv_0= 'Design' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'type' ( (lv_type_3_0= ruleDesignType ) ) ( (lv_factor_4_0= ruleFactor ) )* otherlv_5= ';' )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:241:3: otherlv_0= 'Design' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'type' ( (lv_type_3_0= ruleDesignType ) ) ( (lv_factor_4_0= ruleFactor ) )* otherlv_5= ';'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleExperimentalPlan458); 

                	newLeafNode(otherlv_0, grammarAccess.getExperimentalPlanAccess().getDesignKeyword_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:245:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:246:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:246:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:247:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleExperimentalPlan475); 

            			newLeafNode(lv_name_1_0, grammarAccess.getExperimentalPlanAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getExperimentalPlanRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleExperimentalPlan492); 

                	newLeafNode(otherlv_2, grammarAccess.getExperimentalPlanAccess().getTypeKeyword_2());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:267:1: ( (lv_type_3_0= ruleDesignType ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:268:1: (lv_type_3_0= ruleDesignType )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:268:1: (lv_type_3_0= ruleDesignType )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:269:3: lv_type_3_0= ruleDesignType
            {
             
            	        newCompositeNode(grammarAccess.getExperimentalPlanAccess().getTypeDesignTypeEnumRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleDesignType_in_ruleExperimentalPlan513);
            lv_type_3_0=ruleDesignType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExperimentalPlanRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_3_0, 
                    		"DesignType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:285:2: ( (lv_factor_4_0= ruleFactor ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==19) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:286:1: (lv_factor_4_0= ruleFactor )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:286:1: (lv_factor_4_0= ruleFactor )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:287:3: lv_factor_4_0= ruleFactor
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getExperimentalPlanAccess().getFactorFactorParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleFactor_in_ruleExperimentalPlan534);
            	    lv_factor_4_0=ruleFactor();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getExperimentalPlanRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"factor",
            	            		lv_factor_4_0, 
            	            		"Factor");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleExperimentalPlan547); 

                	newLeafNode(otherlv_5, grammarAccess.getExperimentalPlanAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExperimentalPlan"


    // $ANTLR start "entryRuleFactor"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:315:1: entryRuleFactor returns [EObject current=null] : iv_ruleFactor= ruleFactor EOF ;
    public final EObject entryRuleFactor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFactor = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:316:2: (iv_ruleFactor= ruleFactor EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:317:2: iv_ruleFactor= ruleFactor EOF
            {
             newCompositeNode(grammarAccess.getFactorRule()); 
            pushFollow(FOLLOW_ruleFactor_in_entryRuleFactor583);
            iv_ruleFactor=ruleFactor();

            state._fsp--;

             current =iv_ruleFactor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFactor593); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFactor"


    // $ANTLR start "ruleFactor"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:324:1: ruleFactor returns [EObject current=null] : (otherlv_0= 'Factor' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'isTreatment' ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) ) ( (lv_level_4_0= ruleLevels ) )* otherlv_5= ';' ) ;
    public final EObject ruleFactor() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_main_3_1=null;
        Token lv_main_3_2=null;
        Token otherlv_5=null;
        EObject lv_level_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:327:28: ( (otherlv_0= 'Factor' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'isTreatment' ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) ) ( (lv_level_4_0= ruleLevels ) )* otherlv_5= ';' ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:328:1: (otherlv_0= 'Factor' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'isTreatment' ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) ) ( (lv_level_4_0= ruleLevels ) )* otherlv_5= ';' )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:328:1: (otherlv_0= 'Factor' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'isTreatment' ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) ) ( (lv_level_4_0= ruleLevels ) )* otherlv_5= ';' )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:328:3: otherlv_0= 'Factor' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= 'isTreatment' ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) ) ( (lv_level_4_0= ruleLevels ) )* otherlv_5= ';'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleFactor630); 

                	newLeafNode(otherlv_0, grammarAccess.getFactorAccess().getFactorKeyword_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:332:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:333:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:333:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:334:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFactor647); 

            			newLeafNode(lv_name_1_0, grammarAccess.getFactorAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFactorRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleFactor664); 

                	newLeafNode(otherlv_2, grammarAccess.getFactorAccess().getIsTreatmentKeyword_2());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:354:1: ( ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:355:1: ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:355:1: ( (lv_main_3_1= 'True' | lv_main_3_2= 'False' ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:356:1: (lv_main_3_1= 'True' | lv_main_3_2= 'False' )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:356:1: (lv_main_3_1= 'True' | lv_main_3_2= 'False' )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==21) ) {
                alt9=1;
            }
            else if ( (LA9_0==22) ) {
                alt9=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }
            switch (alt9) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:357:3: lv_main_3_1= 'True'
                    {
                    lv_main_3_1=(Token)match(input,21,FOLLOW_21_in_ruleFactor684); 

                            newLeafNode(lv_main_3_1, grammarAccess.getFactorAccess().getMainTrueKeyword_3_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFactorRule());
                    	        }
                           		setWithLastConsumed(current, "main", lv_main_3_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:369:8: lv_main_3_2= 'False'
                    {
                    lv_main_3_2=(Token)match(input,22,FOLLOW_22_in_ruleFactor713); 

                            newLeafNode(lv_main_3_2, grammarAccess.getFactorAccess().getMainFalseKeyword_3_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFactorRule());
                    	        }
                           		setWithLastConsumed(current, "main", lv_main_3_2, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:384:2: ( (lv_level_4_0= ruleLevels ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==23) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:385:1: (lv_level_4_0= ruleLevels )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:385:1: (lv_level_4_0= ruleLevels )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:386:3: lv_level_4_0= ruleLevels
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFactorAccess().getLevelLevelsParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleLevels_in_ruleFactor750);
            	    lv_level_4_0=ruleLevels();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFactorRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"level",
            	            		lv_level_4_0, 
            	            		"Levels");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleFactor763); 

                	newLeafNode(otherlv_5, grammarAccess.getFactorAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFactor"


    // $ANTLR start "entryRuleLevels"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:414:1: entryRuleLevels returns [EObject current=null] : iv_ruleLevels= ruleLevels EOF ;
    public final EObject entryRuleLevels() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLevels = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:415:2: (iv_ruleLevels= ruleLevels EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:416:2: iv_ruleLevels= ruleLevels EOF
            {
             newCompositeNode(grammarAccess.getLevelsRule()); 
            pushFollow(FOLLOW_ruleLevels_in_entryRuleLevels799);
            iv_ruleLevels=ruleLevels();

            state._fsp--;

             current =iv_ruleLevels; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLevels809); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLevels"


    // $ANTLR start "ruleLevels"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:423:1: ruleLevels returns [EObject current=null] : (otherlv_0= 'Level' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= ';' ) ;
    public final EObject ruleLevels() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:426:28: ( (otherlv_0= 'Level' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= ';' ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:427:1: (otherlv_0= 'Level' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= ';' )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:427:1: (otherlv_0= 'Level' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= ';' )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:427:3: otherlv_0= 'Level' ( (lv_name_1_0= RULE_STRING ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleLevels846); 

                	newLeafNode(otherlv_0, grammarAccess.getLevelsAccess().getLevelKeyword_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:431:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:432:1: (lv_name_1_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:432:1: (lv_name_1_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:433:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLevels863); 

            			newLeafNode(lv_name_1_0, grammarAccess.getLevelsAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLevelsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleLevels880); 

                	newLeafNode(otherlv_2, grammarAccess.getLevelsAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLevels"


    // $ANTLR start "entryRuleQuestions"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:461:1: entryRuleQuestions returns [EObject current=null] : iv_ruleQuestions= ruleQuestions EOF ;
    public final EObject entryRuleQuestions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleQuestions = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:462:2: (iv_ruleQuestions= ruleQuestions EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:463:2: iv_ruleQuestions= ruleQuestions EOF
            {
             newCompositeNode(grammarAccess.getQuestionsRule()); 
            pushFollow(FOLLOW_ruleQuestions_in_entryRuleQuestions916);
            iv_ruleQuestions=ruleQuestions();

            state._fsp--;

             current =iv_ruleQuestions; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQuestions926); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQuestions"


    // $ANTLR start "ruleQuestions"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:470:1: ruleQuestions returns [EObject current=null] : ( ( (lv_name_0_0= RULE_STRING ) ) otherlv_1= '{' (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) ) (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) ) (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )? ( (lv_alternatives_10_0= ruleAlternatives ) )* otherlv_11= '}' ) ;
    public final EObject ruleQuestions() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_description_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token lv_id_7_0=null;
        Token otherlv_8=null;
        Token lv_req_9_0=null;
        Token otherlv_11=null;
        Enumerator lv_type_5_0 = null;

        EObject lv_alternatives_10_0 = null;


         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:473:28: ( ( ( (lv_name_0_0= RULE_STRING ) ) otherlv_1= '{' (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) ) (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) ) (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )? ( (lv_alternatives_10_0= ruleAlternatives ) )* otherlv_11= '}' ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:474:1: ( ( (lv_name_0_0= RULE_STRING ) ) otherlv_1= '{' (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) ) (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) ) (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )? ( (lv_alternatives_10_0= ruleAlternatives ) )* otherlv_11= '}' )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:474:1: ( ( (lv_name_0_0= RULE_STRING ) ) otherlv_1= '{' (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) ) (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) ) (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )? ( (lv_alternatives_10_0= ruleAlternatives ) )* otherlv_11= '}' )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:474:2: ( (lv_name_0_0= RULE_STRING ) ) otherlv_1= '{' (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) ) (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) ) (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) ) (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )? ( (lv_alternatives_10_0= ruleAlternatives ) )* otherlv_11= '}'
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:474:2: ( (lv_name_0_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:475:1: (lv_name_0_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:475:1: (lv_name_0_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:476:3: lv_name_0_0= RULE_STRING
            {
            lv_name_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleQuestions968); 

            			newLeafNode(lv_name_0_0, grammarAccess.getQuestionsAccess().getNameSTRINGTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getQuestionsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleQuestions985); 

                	newLeafNode(otherlv_1, grammarAccess.getQuestionsAccess().getLeftCurlyBracketKeyword_1());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:496:1: (otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:496:3: otherlv_2= 'description' ( (lv_description_3_0= RULE_STRING ) )
            {
            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleQuestions998); 

                	newLeafNode(otherlv_2, grammarAccess.getQuestionsAccess().getDescriptionKeyword_2_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:500:1: ( (lv_description_3_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:501:1: (lv_description_3_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:501:1: (lv_description_3_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:502:3: lv_description_3_0= RULE_STRING
            {
            lv_description_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleQuestions1015); 

            			newLeafNode(lv_description_3_0, grammarAccess.getQuestionsAccess().getDescriptionSTRINGTerminalRuleCall_2_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getQuestionsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_3_0, 
                    		"STRING");
            	    

            }


            }


            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:518:3: (otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:518:5: otherlv_4= 'type' ( (lv_type_5_0= ruleAnswerType ) )
            {
            otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleQuestions1034); 

                	newLeafNode(otherlv_4, grammarAccess.getQuestionsAccess().getTypeKeyword_3_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:522:1: ( (lv_type_5_0= ruleAnswerType ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:523:1: (lv_type_5_0= ruleAnswerType )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:523:1: (lv_type_5_0= ruleAnswerType )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:524:3: lv_type_5_0= ruleAnswerType
            {
             
            	        newCompositeNode(grammarAccess.getQuestionsAccess().getTypeAnswerTypeEnumRuleCall_3_1_0()); 
            	    
            pushFollow(FOLLOW_ruleAnswerType_in_ruleQuestions1055);
            lv_type_5_0=ruleAnswerType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getQuestionsRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_5_0, 
                    		"AnswerType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:540:3: (otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:540:5: otherlv_6= 'id' ( (lv_id_7_0= RULE_ID ) )
            {
            otherlv_6=(Token)match(input,26,FOLLOW_26_in_ruleQuestions1069); 

                	newLeafNode(otherlv_6, grammarAccess.getQuestionsAccess().getIdKeyword_4_0());
                
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:544:1: ( (lv_id_7_0= RULE_ID ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:545:1: (lv_id_7_0= RULE_ID )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:545:1: (lv_id_7_0= RULE_ID )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:546:3: lv_id_7_0= RULE_ID
            {
            lv_id_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQuestions1086); 

            			newLeafNode(lv_id_7_0, grammarAccess.getQuestionsAccess().getIdIDTerminalRuleCall_4_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getQuestionsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"id",
                    		lv_id_7_0, 
                    		"ID");
            	    

            }


            }


            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:562:3: (otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) ) )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==27) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:562:5: otherlv_8= 'required' ( (lv_req_9_0= RULE_INT ) )
                    {
                    otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleQuestions1105); 

                        	newLeafNode(otherlv_8, grammarAccess.getQuestionsAccess().getRequiredKeyword_5_0());
                        
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:566:1: ( (lv_req_9_0= RULE_INT ) )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:567:1: (lv_req_9_0= RULE_INT )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:567:1: (lv_req_9_0= RULE_INT )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:568:3: lv_req_9_0= RULE_INT
                    {
                    lv_req_9_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleQuestions1122); 

                    			newLeafNode(lv_req_9_0, grammarAccess.getQuestionsAccess().getReqINTTerminalRuleCall_5_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getQuestionsRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"req",
                            		lv_req_9_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:584:4: ( (lv_alternatives_10_0= ruleAlternatives ) )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==RULE_STRING) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:585:1: (lv_alternatives_10_0= ruleAlternatives )
            	    {
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:585:1: (lv_alternatives_10_0= ruleAlternatives )
            	    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:586:3: lv_alternatives_10_0= ruleAlternatives
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getQuestionsAccess().getAlternativesAlternativesParserRuleCall_6_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAlternatives_in_ruleQuestions1150);
            	    lv_alternatives_10_0=ruleAlternatives();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getQuestionsRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"alternatives",
            	            		lv_alternatives_10_0, 
            	            		"Alternatives");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);

            otherlv_11=(Token)match(input,28,FOLLOW_28_in_ruleQuestions1163); 

                	newLeafNode(otherlv_11, grammarAccess.getQuestionsAccess().getRightCurlyBracketKeyword_7());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQuestions"


    // $ANTLR start "entryRuleAlternatives"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:614:1: entryRuleAlternatives returns [EObject current=null] : iv_ruleAlternatives= ruleAlternatives EOF ;
    public final EObject entryRuleAlternatives() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAlternatives = null;


        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:615:2: (iv_ruleAlternatives= ruleAlternatives EOF )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:616:2: iv_ruleAlternatives= ruleAlternatives EOF
            {
             newCompositeNode(grammarAccess.getAlternativesRule()); 
            pushFollow(FOLLOW_ruleAlternatives_in_entryRuleAlternatives1199);
            iv_ruleAlternatives=ruleAlternatives();

            state._fsp--;

             current =iv_ruleAlternatives; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAlternatives1209); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAlternatives"


    // $ANTLR start "ruleAlternatives"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:623:1: ruleAlternatives returns [EObject current=null] : ( (lv_description_0_0= RULE_STRING ) ) ;
    public final EObject ruleAlternatives() throws RecognitionException {
        EObject current = null;

        Token lv_description_0_0=null;

         enterRule(); 
            
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:626:28: ( ( (lv_description_0_0= RULE_STRING ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:627:1: ( (lv_description_0_0= RULE_STRING ) )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:627:1: ( (lv_description_0_0= RULE_STRING ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:628:1: (lv_description_0_0= RULE_STRING )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:628:1: (lv_description_0_0= RULE_STRING )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:629:3: lv_description_0_0= RULE_STRING
            {
            lv_description_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAlternatives1250); 

            			newLeafNode(lv_description_0_0, grammarAccess.getAlternativesAccess().getDescriptionSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAlternativesRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"description",
                    		lv_description_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAlternatives"


    // $ANTLR start "ruleDesignType"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:653:1: ruleDesignType returns [Enumerator current=null] : ( (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' ) | (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' ) | (enumLiteral_2= 'LS \\u2013 Latin Square' ) ) ;
    public final Enumerator ruleDesignType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:655:28: ( ( (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' ) | (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' ) | (enumLiteral_2= 'LS \\u2013 Latin Square' ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:656:1: ( (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' ) | (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' ) | (enumLiteral_2= 'LS \\u2013 Latin Square' ) )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:656:1: ( (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' ) | (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' ) | (enumLiteral_2= 'LS \\u2013 Latin Square' ) )
            int alt13=3;
            switch ( input.LA(1) ) {
            case 29:
                {
                alt13=1;
                }
                break;
            case 30:
                {
                alt13=2;
                }
                break;
            case 31:
                {
                alt13=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:656:2: (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:656:2: (enumLiteral_0= 'CRD \\u2013 Completely Randomized Design' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:656:4: enumLiteral_0= 'CRD \\u2013 Completely Randomized Design'
                    {
                    enumLiteral_0=(Token)match(input,29,FOLLOW_29_in_ruleDesignType1304); 

                            current = grammarAccess.getDesignTypeAccess().getCDREnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getDesignTypeAccess().getCDREnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:662:6: (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:662:6: (enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:662:8: enumLiteral_1= 'RCBD \\u2013 Randomized Complete Block Design'
                    {
                    enumLiteral_1=(Token)match(input,30,FOLLOW_30_in_ruleDesignType1321); 

                            current = grammarAccess.getDesignTypeAccess().getRCDBEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getDesignTypeAccess().getRCDBEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:668:6: (enumLiteral_2= 'LS \\u2013 Latin Square' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:668:6: (enumLiteral_2= 'LS \\u2013 Latin Square' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:668:8: enumLiteral_2= 'LS \\u2013 Latin Square'
                    {
                    enumLiteral_2=(Token)match(input,31,FOLLOW_31_in_ruleDesignType1338); 

                            current = grammarAccess.getDesignTypeAccess().getLSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getDesignTypeAccess().getLSEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDesignType"


    // $ANTLR start "ruleAnswerType"
    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:678:1: ruleAnswerType returns [Enumerator current=null] : ( (enumLiteral_0= 'ComboBox' ) | (enumLiteral_1= 'CheckBoxes' ) | (enumLiteral_2= 'OptionButtons' ) ) ;
    public final Enumerator ruleAnswerType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:680:28: ( ( (enumLiteral_0= 'ComboBox' ) | (enumLiteral_1= 'CheckBoxes' ) | (enumLiteral_2= 'OptionButtons' ) ) )
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:681:1: ( (enumLiteral_0= 'ComboBox' ) | (enumLiteral_1= 'CheckBoxes' ) | (enumLiteral_2= 'OptionButtons' ) )
            {
            // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:681:1: ( (enumLiteral_0= 'ComboBox' ) | (enumLiteral_1= 'CheckBoxes' ) | (enumLiteral_2= 'OptionButtons' ) )
            int alt14=3;
            switch ( input.LA(1) ) {
            case 32:
                {
                alt14=1;
                }
                break;
            case 33:
                {
                alt14=2;
                }
                break;
            case 34:
                {
                alt14=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }

            switch (alt14) {
                case 1 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:681:2: (enumLiteral_0= 'ComboBox' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:681:2: (enumLiteral_0= 'ComboBox' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:681:4: enumLiteral_0= 'ComboBox'
                    {
                    enumLiteral_0=(Token)match(input,32,FOLLOW_32_in_ruleAnswerType1383); 

                            current = grammarAccess.getAnswerTypeAccess().getComboBoxEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getAnswerTypeAccess().getComboBoxEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:687:6: (enumLiteral_1= 'CheckBoxes' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:687:6: (enumLiteral_1= 'CheckBoxes' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:687:8: enumLiteral_1= 'CheckBoxes'
                    {
                    enumLiteral_1=(Token)match(input,33,FOLLOW_33_in_ruleAnswerType1400); 

                            current = grammarAccess.getAnswerTypeAccess().getCheckBoxesEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getAnswerTypeAccess().getCheckBoxesEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:693:6: (enumLiteral_2= 'OptionButtons' )
                    {
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:693:6: (enumLiteral_2= 'OptionButtons' )
                    // ../br.ufrn.dimap.ExperimentDslLanguage/src-gen/br/ufrn/dimap/ExperimentDslLanguage/parser/antlr/internal/InternalExperimentDsl.g:693:8: enumLiteral_2= 'OptionButtons'
                    {
                    enumLiteral_2=(Token)match(input,34,FOLLOW_34_in_ruleAnswerType1417); 

                            current = grammarAccess.getAnswerTypeAccess().getOptionButtonsEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getAnswerTypeAccess().getOptionButtonsEnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnswerType"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExperimentElement_in_ruleModel130 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_ruleExperimentElement_in_entryRuleExperimentElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExperimentElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleExperimentElement213 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleExperimentElement230 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleExperimentElement247 = new BitSet(new long[]{0x0000000000002020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleExperimentElement267 = new BitSet(new long[]{0x0000000000002020L});
    public static final BitSet FOLLOW_13_in_ruleExperimentElement280 = new BitSet(new long[]{0x000000000000C022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleExperimentElement300 = new BitSet(new long[]{0x000000000000C022L});
    public static final BitSet FOLLOW_14_in_ruleExperimentElement314 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_ruleExperimentalPlan_in_ruleExperimentElement335 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_15_in_ruleExperimentElement351 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleQuestions_in_ruleExperimentElement372 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleExperimentalPlan_in_entryRuleExperimentalPlan411 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExperimentalPlan421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleExperimentalPlan458 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleExperimentalPlan475 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleExperimentalPlan492 = new BitSet(new long[]{0x00000000E0000000L});
    public static final BitSet FOLLOW_ruleDesignType_in_ruleExperimentalPlan513 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_ruleFactor_in_ruleExperimentalPlan534 = new BitSet(new long[]{0x00000000000C0000L});
    public static final BitSet FOLLOW_18_in_ruleExperimentalPlan547 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFactor_in_entryRuleFactor583 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFactor593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleFactor630 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFactor647 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleFactor664 = new BitSet(new long[]{0x0000000000600000L});
    public static final BitSet FOLLOW_21_in_ruleFactor684 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_22_in_ruleFactor713 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_ruleLevels_in_ruleFactor750 = new BitSet(new long[]{0x0000000000840000L});
    public static final BitSet FOLLOW_18_in_ruleFactor763 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLevels_in_entryRuleLevels799 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLevels809 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleLevels846 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLevels863 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleLevels880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQuestions_in_entryRuleQuestions916 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQuestions926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleQuestions968 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleQuestions985 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleQuestions998 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleQuestions1015 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleQuestions1034 = new BitSet(new long[]{0x0000000700000000L});
    public static final BitSet FOLLOW_ruleAnswerType_in_ruleQuestions1055 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleQuestions1069 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQuestions1086 = new BitSet(new long[]{0x0000000018000010L});
    public static final BitSet FOLLOW_27_in_ruleQuestions1105 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleQuestions1122 = new BitSet(new long[]{0x0000000010000010L});
    public static final BitSet FOLLOW_ruleAlternatives_in_ruleQuestions1150 = new BitSet(new long[]{0x0000000010000010L});
    public static final BitSet FOLLOW_28_in_ruleQuestions1163 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlternatives_in_entryRuleAlternatives1199 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAlternatives1209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAlternatives1250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleDesignType1304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleDesignType1321 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleDesignType1338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleAnswerType1383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleAnswerType1400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleAnswerType1417 = new BitSet(new long[]{0x0000000000000002L});

}